﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WeChatBotSDK.JsonEx;

namespace WeChatBotSDK.Models.EventCallback
{
    /// <summary>
    /// 微信用户信息数据类
    /// </summary>
    public record WeChatUserInfoData : IWeChatEventData
    {
        /// <summary>
        /// 用户在线状态，1=上线，0=下线。
        /// </summary>
        //[JsonConverter(typeof(StringToEnumConverter<OnlineStatus>))]
        [JsonPropertyName("type")]
        public OnlineStatus Type { get; set; }

        /// <summary>
        /// 使用的端口号。
        /// </summary>
        //[JsonConverter(typeof(IntConverter))]
        [JsonPropertyName("port")]
        public int Port { get; set; }

        /// <summary>
        /// 微信机器人的微信 ID。
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; }

        /// <summary>
        /// 微信号
        /// </summary>
        [JsonPropertyName("wxNum")]
        public string WxNum { get; set; }

        /// <summary>
        /// 昵称
        /// </summary>
        [JsonPropertyName("nick")]
        public string Nick { get; set; }

        /// <summary>
        /// 设备信息（通常为空）。
        /// </summary>
        [JsonPropertyName("device")]
        public string Device { get; set; }

        /// <summary>
        /// 手机号。
        /// </summary>
        [JsonPropertyName("phone")]
        public string Phone { get; set; }

        /// <summary>
        /// 头像 URL。
        /// </summary>
        [JsonPropertyName("avatarUrl")]
        public string AvatarUrl { get; set; }

        /// <summary>
        /// 国家代码。
        /// </summary>
        [JsonPropertyName("country")]
        public string Country { get; set; }

        /// <summary>
        /// 省份。
        /// </summary>
        [JsonPropertyName("province")]
        public string Province { get; set; }

        /// <summary>
        /// 城市。
        /// </summary>
        [JsonPropertyName("city")]
        public string City { get; set; }

        /// <summary>
        /// 邮箱地址（通常为空）。
        /// </summary>
        [JsonPropertyName("email")]
        public string Email { get; set; }

        /// <summary>
        /// QQ 号（通常为空）。
        /// </summary>
        [JsonPropertyName("qq")]
        public string Qq { get; set; }

        /// <summary>
        /// 个性签名。
        /// </summary>
        [JsonPropertyName("sign")]
        public string Sign { get; set; }
    }

    public record WeChatUserInfoData_D
    {
        /// <summary>
        /// 微信机器人的微信 ID。
        /// </summary>
        [JsonPropertyName("wxid")]
        public string Wxid { get; set; }

        /// <summary>
        /// 微信号
        /// </summary>
        [JsonPropertyName("wxNum")]
        public string WxNum { get; set; }

        /// <summary>
        /// 昵称
        /// </summary>
        [JsonPropertyName("nick")]
        public string Nick { get; set; }

        /// <summary>
        /// 设备信息（通常为空）。
        /// </summary>
        [JsonPropertyName("device")]
        public string Device { get; set; }

        /// <summary>
        /// 手机号。
        /// </summary>
        [JsonPropertyName("phone")]
        public string Phone { get; set; }

        /// <summary>
        /// 头像 URL。
        /// </summary>
        [JsonPropertyName("avatarUrl")]
        public string AvatarUrl { get; set; }

        /// <summary>
        /// 国家代码。
        /// </summary>
        [JsonPropertyName("country")]
        public string Country { get; set; }

        /// <summary>
        /// 省份。
        /// </summary>
        [JsonPropertyName("province")]
        public string Province { get; set; }

        /// <summary>
        /// 城市。
        /// </summary>
        [JsonPropertyName("city")]
        public string City { get; set; }

        /// <summary>
        /// 邮箱地址（通常为空）。
        /// </summary>
        [JsonPropertyName("email")]
        public string Email { get; set; }

        /// <summary>
        /// QQ 号（通常为空）。
        /// </summary>
        [JsonPropertyName("qq")]
        public string Qq { get; set; }

        /// <summary>
        /// 个性签名。
        /// </summary>
        [JsonPropertyName("sign")]
        public string Sign { get; set; }
    }
}
